<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2015/11/24
 * Description: PDO入门教程
 */

// 原有mysql连接数据库的方法
$link = mysql_connect('localhost', 'root', 'root');
mysql_select_db('test', $link); // 选择数据库
mysql_set_charset('utf-8', $link); // 设置字符集

// 利用PDO连接
$dsn = 'mysql:host=localhost;dbname=test;charset=utf8';  // 构造数据源
// 创建PDO对象,参数包括DSN数据源，username，password和驱动选项的数组
$db = new PDO($dsn, 'root', 'root', array(
    PDO::ATTR_EMULATE_PREPARES => false,  // 这里关闭，是为了避免对sql进行本地的转义
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION // 设置为异常模式
));
// 也可以在创建PDO对象后，通过setAttribute方法设置相应的选项
$db = new PDO($dsn, 'root', 'root');
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// 原有mysql关于错发的处理
$link = mysql_connect('localhost', 'root', 'root') or die('error link');
$result = mysql_query('select * from user', $link) or die(mysql_error($link));
// PDO处理错误模式
try {
    $stmt = $db->query('select * from user');
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $ex) {
    // 处理异常
}

// mysql 执行 INSERT,UPDATE,DELETE 操作
$results = mysql_query("update table set field = 'value'") or die(mysql_error($link));
$affected_rows = mysql_affected_rows();

// PDO 执行 INSERT,UPDATE,DELETE 操作
$affected_rows = $db->exec("update table set field = 'value'");

// mysql 执行带有条件的查询语句
$result = mysql_query("select * from table where field1='value1' and field='value2'") or die(mysql_error($link));
while ($row = mysql_fetch_assoc($result)) {
    $list[] = $row;
}

// PDO 执行带有条件的查询语句(预处理)
$stmt = $db->prepare("select * from table where id = :id and name = :name");
$stmt->execute(array($id, $name));
// 或者使用bindValue绑定参数
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->execute();
$list = $stmt->fetchAll(PDO::FETCH_ASSOC);
